text: Handle key events in the target phase
authorMatthias Clasen <mclasen@redhat.com>
Fri, 26 Jun 2020 18:08:35 +0000 (14:08 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 26 Jun 2020 18:08:35 +0000 (14:08 -0400)
This makes sure that we do actual key input right
in the middle between all the capture and bubble
event controllers, and are not dependent on the
ordering of those controllers.

The bug that triggered this change was that the
shortcut for activation (Enter) was getting triggered
before the key input, causing Ctrl-Shift-u hex
to stop working, since it never received the enter
to commit the sequence.

gtk/gtktext.c

index bea689c7d10ab1791f88fcefe64a5b7314cdd3b9..2e4484c1f6aa8c9dc3e0beedee39210d3c2bdad3 100644 (file)
@@ -1884,6 +1884,7 @@ gtk_text_init (GtkText *self)
   gtk_widget_add_controller (GTK_WIDGET (self), controller);
 
   priv->key_controller = gtk_event_controller_key_new ();
+  gtk_event_controller_set_propagation_phase (priv->key_controller, GTK_PHASE_TARGET);
   gtk_event_controller_set_name (priv->key_controller, "gtk-text-key-controller");
   g_signal_connect (priv->key_controller, "key-pressed",
                     G_CALLBACK (gtk_text_key_controller_key_pressed), self);